When designing complex software projects, it has been proposed to use models to represent the main aspects. Such an approach is known as the MDA (model driven architecture) approach, which was launched by OMG (Object Management Group).
Furthermore, a language known as Unified Modeling Language (UML) is a standardized modeling language that has been proposed by OMG for specifying, visualizing and constructing software systems.
Generally, the conception of a complex software project involves a number of different groups of designers, from business managers who determine the system requirements from a business perspective, to software engineers who develop the code for a specific platform. In between the business managers and software engineers, there are often designers specializing in functional aspects, and others specializing in applications or other aspects. Each group of designers for example represents aspects of the design using a modeling language.
A problem exists during this design process, as it is very difficult to ensure that the designs developed by the various groups all continue to respect the business requirements originally defined by the business managers. Thus there is a technical problem in maintaining coherence between the models at the various design levels.
A further problem with this design process is that it tends to be costly and inefficient in terms of the time spent by the various designers. In particular, there is a technical problem in permitting the reuse of existing software assets, for example previously developed models for different software projects, in new projects, meaning that a lot of work tends to be repeated.